當得到資料為混亂資料時,我們可使用函式將DataFrame重組成整齊的樣子。先使用stack()將所有欄位名稱旋轉成索引,再使用reset_index()來重置索引,最後以rename()加上適當的欄位名稱。
整齊的資料
1.每種變數形成一個欄位
2.每筆觀察結果形成一列
3.每種類型的觀察單位形成一個表格
原始資料
import pandas as pd
pd.DataFrame([[8,7,6,5,4],[3,4,2,9,5],[4,6,7,2,8],[2,7,6,3,9]],index=['小明','小美','小英','小玉'],columns=['蘋果','芭樂','香蕉','橘子','檸檬'])
執行結果
蘋果 芭樂 香蕉 橘子 檸檬
小明 8 7 6 5 4
小美 3 4 2 9 5
小英 4 6 7 2 8
小玉 2 7 6 3 9
使用stack()將所有欄位名稱旋轉成索引
import pandas as pd
df=pd.DataFrame([[8,7,6,5,4],[3,4,2,9,5],[4,6,7,2,8],[2,7,6,3,9]],index=['小明','小美','小英','小玉'],columns=['蘋果','芭樂','香蕉','橘子','檸檬'])
df.stack()
執行結果:
小明 蘋果 8
芭樂 7
香蕉 6
橘子 5
檸檬 4
小美 蘋果 3
芭樂 4
香蕉 2
橘子 9
檸檬 5
小英 蘋果 4
芭樂 6
香蕉 7
橘子 2
檸檬 8
小玉 蘋果 2
芭樂 7
香蕉 6
橘子 3
檸檬 9
dtype: int64
再使用reset_index()來重置索引
df.stack().reset_index()
執行結果:
level_0 level_1 0
0 小明 蘋果 8
1 小明 芭樂 7
2 小明 香蕉 6
3 小明 橘子 5
4 小明 檸檬 4
5 小美 蘋果 3
6 小美 芭樂 4
7 小美 香蕉 2
8 小美 橘子 9
9 小美 檸檬 5
10 小英 蘋果 4
11 小英 芭樂 6
12 小英 香蕉 7
13 小英 橘子 2
14 小英 檸檬 8
15 小玉 蘋果 2
16 小玉 芭樂 7
17 小玉 香蕉 6
18 小玉 橘子 3
19 小玉 檸檬 9
以rename()加上適當的欄位名稱
df.stack().reset_index().rename(columns={'level_0':'人員','level_1':'水果',0:'喜好程度'})
執行結果:
人員 水果 喜好程度
0 小明 蘋果 8
1 小明 芭樂 7
2 小明 香蕉 6
3 小明 橘子 5
4 小明 檸檬 4
5 小美 蘋果 3
6 小美 芭樂 4
7 小美 香蕉 2
8 小美 橘子 9
9 小美 檸檬 5
10 小英 蘋果 4
11 小英 芭樂 6
12 小英 香蕉 7
13 小英 橘子 2
14 小英 檸檬 8
15 小玉 蘋果 2
16 小玉 芭樂 7
17 小玉 香蕉 6
18 小玉 橘子 3
19 小玉 檸檬 9
加油~明天再繼續囉~~